package DB;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import modele.Utilisateur;

import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

/**
 * <h1><b>Classe : </b>XMLParser</h1>
 * <p>
 * Classe permettant l'accès à la pseudo base de donnée sous format XML.
 * Il faut instancier cette classe puis utiliser ces fonctions pour obtenir des <b>ArrayList</b> de données.
 * </p>
 * @author patrick-edouard
 *
 */
public class XMLParser {

	static final String xmlPath = "donnees.xml";
	private Element racine;
	private Element personnes;
	
	/**
	 * <h1>Personne</h1>
	 * <p>
	 * Constructeur du parseur de base de donnée. Ouvre et parse l'architecture du fichier XML.
	 * </p>
	 */
	public XMLParser()
	{
		this.ouvreFichierXML();
	}
	
	/**
	 * <h1><b>Fonction : </b>ouvreFichierXML</h1>
	 * <p>
	 * Permet d'ouvrir le fichier XML des donnees.
	 * </p>
	 */
	
	private void ouvreFichierXML()
	{
		SAXBuilder sxb = new SAXBuilder();
		try {
			try {
				this.racine = sxb.build(new File(XMLParser.xmlPath)).getRootElement();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		} catch (JDOMException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * <h1><b>Fonction : </b>getPersonnes</h1>
	 * <p>
	 * Permet de parser toutes les personnes sous formes d'instance de Personne
	 * </p>
	 * @return <b>listPersonnes :</b> une arraylist de Personne
	 */
	
	public ArrayList<Utilisateur> getUtilisateurs()
	{
		ArrayList<Utilisateur> listUtilisateurs = new ArrayList<Utilisateur>();
		
		this.personnes=this.racine.getChild("personnes");
		
		/*
		 * Boucle sur toutes les personnes comprisent dans le fichier XML
		 */
		for(Element e :this.personnes.getChildren())
		{
			/*
			 * Récupère les attributs de l'utilisateur
			 */
						
			String ID = e.getChild("nom").getTextTrim();
			String nom = e.getChild("nom").getTextTrim();
			String prenom = e.getChild("nom").getTextTrim();
			String telFixe = e.getChild("nom").getTextTrim();
			String telPort = e.getChild("nom").getTextTrim();
			String adresse = e.getChild("nom").getTextTrim();
			String rueComplement = e.getChild("nom").getTextTrim();
			String ville = e.getChild("nom").getTextTrim();
			int codePostal = Integer.parseInt(e.getChild("id").getTextTrim());
			String pays = e.getChild("nom").getTextTrim();
			String mail = e.getChild("nom").getTextTrim();
			String promo = e.getChild("nom").getTextTrim();
			String niveau = e.getChild("nom").getTextTrim();
			String role = e.getChild("nom").getTextTrim();
			boolean tempValid;
			if(e.getChild("nom").getTextTrim()=="true"){tempValid=true;}else {tempValid=false;}
			String CV = e.getChild("nom").getTextTrim();

			listUtilisateurs.add(new Utilisateur(ID, nom, prenom, telFixe, telPort, adresse, rueComplement, ville, codePostal, pays, mail, promo, niveau, CV));
		}
		return listUtilisateurs;
	}
}
